﻿
namespace QSHC.QSchedule.Web.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;


    // The MetadataTypeAttribute identifies AppointedPatientMetadata as the class
    // that carries additional metadata for the AppointedPatient class.
    [MetadataTypeAttribute(typeof(AppointedPatient.AppointedPatientMetadata))]
    public partial class AppointedPatient
    {

        // This class allows you to attach custom attributes to properties
        // of the AppointedPatient class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class AppointedPatientMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private AppointedPatientMetadata()
            {
            }

            public string Address { get; set; }

            public string Amphur { get; set; }

            public EntityCollection<Appointment> Appointments { get; set; }

            public Nullable<DateTime> BirthDate { get; set; }

            public string FirstName { get; set; }

            public string HN { get; set; }

            public string LastName { get; set; }

            public string Payor { get; set; }

            public string Phone { get; set; }

            public string PIN { get; set; }

            public string Province { get; set; }

            public int Sex { get; set; }

            public string Tambon { get; set; }

            public string Title { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies AppointmentMetadata as the class
    // that carries additional metadata for the Appointment class.
    [MetadataTypeAttribute(typeof(Appointment.AppointmentMetadata))]
    public partial class Appointment
    {

        // This class allows you to attach custom attributes to properties
        // of the Appointment class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class AppointmentMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private AppointmentMetadata()
            {
            }

            [Include]
            public AppointedPatient AppointedPatient { get; set; }

            public DateTime AppointmentDate { get; set; }

            [Include]
            public EntityCollection<AppointmentDetail> AppointmentDetails { get; set; }

            public int AppointmentID { get; set; }

            public string AppointmentTime { get; set; }

            public string HN { get; set; }

            public bool IsDeleted { get; set; }

            [Include]
            public EntityCollection<LogAppointment> Logs { get; set; }

            public string Physician { get; set; }

            public string Remark { get; set; }

            [Include]
            public Service Service { get; set; }

            public int ServiceID { get; set; }

            public Nullable<DateTime> VisitDate { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies AppointmentDetailMetadata as the class
    // that carries additional metadata for the AppointmentDetail class.
    [MetadataTypeAttribute(typeof(AppointmentDetail.AppointmentDetailMetadata))]
    public partial class AppointmentDetail
    {

        // This class allows you to attach custom attributes to properties
        // of the AppointmentDetail class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class AppointmentDetailMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private AppointmentDetailMetadata()
            {
            }

            public Appointment Appointment { get; set; }

            public int AppointmentDetailID { get; set; }

            public int AppointmentID { get; set; }

            [Include]
            public PreOrder PreOrder { get; set; }

            public int PreOrderID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies HolidayMetadata as the class
    // that carries additional metadata for the Holiday class.
    [MetadataTypeAttribute(typeof(Holiday.HolidayMetadata))]
    public partial class Holiday
    {

        // This class allows you to attach custom attributes to properties
        // of the Holiday class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class HolidayMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private HolidayMetadata()
            {
            }

            public DateTime HolidayDate { get; set; }

            public int HolidayID { get; set; }

            public bool IsDeleted { get; set; }

            public EntityCollection<LogHoliday> Logs { get; set; }

            public string Name { get; set; }

            public string Remark { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies LogAppointmentMetadata as the class
    // that carries additional metadata for the LogAppointment class.
    [MetadataTypeAttribute(typeof(LogAppointment.LogAppointmentMetadata))]
    public partial class LogAppointment
    {

        // This class allows you to attach custom attributes to properties
        // of the LogAppointment class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class LogAppointmentMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private LogAppointmentMetadata()
            {
            }

            public int Action { get; set; }

            public Appointment Appointment { get; set; }

            public int AppointmentID { get; set; }

            public string EmployeeCode { get; set; }

            public int LogAppointmentID { get; set; }

            public DateTime LogDateTime { get; set; }

            public string PostponeRemark { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies LogHolidayMetadata as the class
    // that carries additional metadata for the LogHoliday class.
    [MetadataTypeAttribute(typeof(LogHoliday.LogHolidayMetadata))]
    public partial class LogHoliday
    {

        // This class allows you to attach custom attributes to properties
        // of the LogHoliday class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class LogHolidayMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private LogHolidayMetadata()
            {
            }

            public int Action { get; set; }

            public string EmployeeCode { get; set; }

            public Holiday Holiday { get; set; }

            public int HolidayID { get; set; }

            public DateTime LogDateTime { get; set; }

            public int LogHolidayID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies LogPhysicianAbsentMetadata as the class
    // that carries additional metadata for the LogPhysicianAbsent class.
    [MetadataTypeAttribute(typeof(LogPhysicianAbsent.LogPhysicianAbsentMetadata))]
    public partial class LogPhysicianAbsent
    {

        // This class allows you to attach custom attributes to properties
        // of the LogPhysicianAbsent class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class LogPhysicianAbsentMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private LogPhysicianAbsentMetadata()
            {
            }

            public int Action { get; set; }

            public string EmployeeCode { get; set; }

            public DateTime LogDateTime { get; set; }

            public int LogPhysicianAbsentID { get; set; }

            public PhysicianAbsent PhysicianAbsent { get; set; }

            public int PhysicianAbsentID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies LogPhysicianScheduleMetadata as the class
    // that carries additional metadata for the LogPhysicianSchedule class.
    [MetadataTypeAttribute(typeof(LogPhysicianSchedule.LogPhysicianScheduleMetadata))]
    public partial class LogPhysicianSchedule
    {

        // This class allows you to attach custom attributes to properties
        // of the LogPhysicianSchedule class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class LogPhysicianScheduleMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private LogPhysicianScheduleMetadata()
            {
            }

            public int Action { get; set; }

            public string EmployeeCode { get; set; }

            public DateTime LogDateTime { get; set; }

            public int LogPhysicianScheduleID { get; set; }

            public PhysicianSchedule PhysicianSchedule { get; set; }

            public int PhysicianScheduleID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies PhysicianAbsentMetadata as the class
    // that carries additional metadata for the PhysicianAbsent class.
    [MetadataTypeAttribute(typeof(PhysicianAbsent.PhysicianAbsentMetadata))]
    public partial class PhysicianAbsent
    {

        // This class allows you to attach custom attributes to properties
        // of the PhysicianAbsent class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class PhysicianAbsentMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private PhysicianAbsentMetadata()
            {
            }

            public DateTime BeginDate { get; set; }

            public Nullable<DateTime> EndDate { get; set; }

            public bool IsDeleted { get; set; }

            [Include]
            public EntityCollection<LogPhysicianAbsent> Logs { get; set; }

            public int PhysicianAbsentID { get; set; }

            public string Reason { get; set; }

            [Include]
            public Service Service { get; set; }

            public Nullable<int> ServiceID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies PhysicianScheduleMetadata as the class
    // that carries additional metadata for the PhysicianSchedule class.
    [MetadataTypeAttribute(typeof(PhysicianSchedule.PhysicianScheduleMetadata))]
    public partial class PhysicianSchedule
    {

        // This class allows you to attach custom attributes to properties
        // of the PhysicianSchedule class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class PhysicianScheduleMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private PhysicianScheduleMetadata()
            {
            }

            public DateTime BeginDate { get; set; }

            public int DayOfWeek { get; set; }

            public Nullable<DateTime> EndDate { get; set; }

            public bool IsDeleted { get; set; }

            [Include]
            public EntityCollection<LogPhysicianSchedule> Logs { get; set; }

            public string Physician { get; set; }

            public int PhysicianScheduleID { get; set; }

            public int Quota { get; set; }

            [Include]
            public Service Service { get; set; }

            public int ServiceID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies PreOrderMetadata as the class
    // that carries additional metadata for the PreOrder class.
    [MetadataTypeAttribute(typeof(PreOrder.PreOrderMetadata))]
    public partial class PreOrder
    {

        // This class allows you to attach custom attributes to properties
        // of the PreOrder class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class PreOrderMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private PreOrderMetadata()
            {
            }

            public string Description { get; set; }

            public bool IsQuotaCount { get; set; }

            public string Name { get; set; }

            public int PreOrderID { get; set; }

            public int Type { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ServiceMetadata as the class
    // that carries additional metadata for the Service class.
    [MetadataTypeAttribute(typeof(Service.ServiceMetadata))]
    public partial class Service
    {

        // This class allows you to attach custom attributes to properties
        // of the Service class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ServiceMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ServiceMetadata()
            {
            }

            public string DefaultAppointmentTime { get; set; }

            public string Name { get; set; }

            public string Phone { get; set; }

            public EntityCollection<PhysicianSchedule> PhysicianSchedules { get; set; }

            public int ServiceID { get; set; }
        }
    }
}
